package file;

public class FAT {
	private final static int[][] fat = new int[128][2];

	/*
	 * fat [i]=255 表示文件结束 254表示磁盘损坏不能再使用 0表示磁盘空闲 1-128表示文件下一块的块号 磁盘的第 0 块一
	 * 定会被系统数据占用，所以任何一个文件的某个盘块块号都不可能是“0”，因而可以用“0” 表示磁盘盘块空闲
	 */
	static void init() {
		int i;
		fat[0][0] = 0;
		fat[0][1] = 255;
		fat[1][0] = 1;
		fat[1][1] = 255;
		for (i = 2; i < 128; i++) {
			fat[i][0] = i;
			fat[i][1] = 0;
		}
	}

	public String addFAT(int start, int next) {
		if (fat[start][1] == 0)// 表示当前盘块为0 空闲可以添加
		{
			fat[start][1] = next;
			return "success";
		} else if (fat[start][1] == 254) {// 当前磁盘已经损坏
			return "错误: 当前磁盘已经损坏";

		} else {
			return "错误:当前磁盘已被占用";
		}

	}

	public String deleteFAT(int start) {
		if (fat[start][1] == 0)// 当前磁盘空闲
		{
			return "警告:当前磁盘无文件";
		} else if (fat[start][1] == 254) {
			return "错误:当前磁盘已损坏";
		} else if (fat[start][1] == 255)// 文件结束
		{
			fat[start][1] = 0;
			return "已经删除成功";
		} else {
			return deleteFAT(fat[start][1]);
		}

	}

}
